
import request from '../../../../apis/axios'

export const getApiPrefix = (prefix='')=>{
  if(!prefix) return ''
  const Expression = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/
  const objExp = new RegExp(Expression)
  if (objExp.test(prefix) || prefix.indexOf('/')===0 ) {
    return prefix
  }
  return `/${prefix}`
}
/**
 * 根据导入任务ID查询任务临时数据行表头字段
 * @param {string} taskId  任务行ID
 * */
export function queryTableExtColumn({apiPrefix,templateCode}) {
  return request({
    url: `${getApiPrefix(apiPrefix)}/api/v1/excel/template/columns`,
    method: 'get',
    params:{templateCode}
  })
}

/**
 * 获取指定任务详情
 * @param {string} apiPrefix  前缀，应用前缀
 * @param {string} excelTaskId  任务行ID
 * */
export function queryTaskDetail(apiPrefix,excelTaskId) {
  return request({
    url: `${getApiPrefix(apiPrefix)}/api/v1/excel/task/current/import/${excelTaskId}`,
    method:'get',
  })
}

/**
 * 获取离线任务临时数据行总数
 * @param {string} apiPrefix  前缀，应用前缀
 * @param {string} excelTaskId  任务行ID
 * */
export function queryTotalNum(apiPrefix,excelTaskId) {
  return request({
    url: `${getApiPrefix(apiPrefix)}/api/v1/excel/tempData/num?excelTaskId=${excelTaskId}`,
    method:'get',
  })
}
/**
 * 获取校验异常或者未校验的数据行统计
 * @param {string} apiPrefix  前缀，应用前缀
 * @param {string} excelTaskId  任务行ID
 * */
export function queryNotCheckPassNum(apiPrefix,excelTaskId) {
  return request({
    url: `${getApiPrefix(apiPrefix)}/api/v1/excel/tempData/notCheckPassNum?excelTaskId=${excelTaskId}`,
    method:'get',
  })
}

/**
 * 保存临时数据行
 * @param {string} apiPrefix  前缀，应用前缀
 * @param {Object} data  表单数据
 * */
export function saveImportData(apiPrefix,data,defineUrl='') {
  let url = `${getApiPrefix(apiPrefix)}/api/v1/excel/tempData`
  if(defineUrl){
    url= defineUrl
  }
  return request({
    url,
    method: data.id ? 'put' : 'post',
    data
  })
}

/**
 * 批量删除临时数据行
 * @param {string} apiPrefix  前缀，应用前缀
 * @param {string} excelTaskId  任务行ID
 * @param {Array} ids  临时数据行ID集合
 * */
export function deleteTaskRowData(apiPrefix,excelTaskId,ids) {
  return request({
    url: `${getApiPrefix(apiPrefix)}/api/v1/excel/tempData/?excelTaskId=${excelTaskId}`,
    method: 'delete',
    data:ids
  })
}

/**
 * 临时数据行校验
 * @param {string} apiUrl  临时数据行校验接口地址  
 * @param {string} excelTaskId  任务ID
 * @param {Array} ids  临时数据行ID集合
 * */
export function taskRowCheck(apiUrl,excelTaskId,ids) {
  return request({
    url:`${apiUrl}?excelTaskId=${excelTaskId}`,
    method: 'post',
    data:ids
  })
}

/**
 * 终止任务
 * @param {string} apiPrefix  前缀，应用前缀
 * @param {string} excelTaskId  任务ID
 * */
export function taskStop(apiPrefix,excelTaskId) {
  return request({
    url: `${getApiPrefix(apiPrefix)}/api/v1/excel/task/stop?excelTaskId=${excelTaskId}`,
    method: 'post'
  })
}

/**
 * 重新校验
 * @param {string} apiUrl  业务数据校验接口地址
 * @param {string} excelTaskId  任务ID
 * */
export function taskResetCheck(apiUrl,excelTaskId) {
  return request({
    url:`${apiUrl}?excelTaskId=${excelTaskId}`,
    method: 'post'
  })
}

/**
 * 执行导入
 * @param {string} apiUrl  业务数据校验接口地址
 * @param {string} excelTaskId  任务ID
 * */
export function taskImport(apiUrl,excelTaskId) {
  return request({
    url:`${apiUrl}?excelTaskId=${excelTaskId}`,
    method: 'post'
  })
}
